package com.css.fxfzaqbz.modules.base.service;

import com.alibaba.fastjson.JSONObject;
import com.css.fxfzaqbz.base.response.RestResponse;
import com.css.fxfzaqbz.modules.base.entity.NetworkanalystVersion;
import com.css.fxfzaqbz.modules.data.entity.Site;
import com.css.fxfzaqbz.modules.supergraph.entity.JcEmergcyShelterVo;
import com.css.fxfzaqbz.modules.supergraph.entity.TemplateEntity;
import org.springframework.web.client.RestTemplate;

import java.util.List;
import java.util.Map;

/**
 * @Description: fxfzaqbz
 * @Author: zyt
 * @CreateDate: 2023/10/25 14:23
 * 超图
 */
public interface HypergraphService {

    //调度器使用的RestTemplate，超时1800s
    public RestTemplate getRestTemplate();

    //获取超图server口令并根据类型调用超图服务
    public RestResponse getServerToken(Map<String, Object> map);

    //安保系统--刷新指定超图工作空间数据源数据集
    public boolean getWorkspaceReload(String dataset);

    //获取超图服务token
    public String getToken();

    //根据起终点经纬度获取交通网络分析服务的最佳路径分析
    public RestResponse getNetworkanalystPath(Map<String, Object> map);

    //工作空间发布交通网络分析服务
    public RestResponse newWorkspaceNetworkVersion(NetworkanalystVersion networkanalystVersion);

    //工作空间发布地图服务
    public RestResponse newWorkspaceRestMap(NetworkanalystVersion networkanalystVersion);

    //删除超图工作空间服务并逻辑删除版本
    public boolean deleteWorkspace(NetworkanalystVersion networkanalystVersion);

    //根据版本号删除超图工作空间服务
    public boolean deleteWorkspaceByVersion(String dataVersion);

    //获取超图工作空间全部地图服务url列表
    public List<String> getRestMapUrlList(String dataVersion);

    //按国家级、省级查询交通网络分析服务版本列表
    public RestResponse getNetworkVersionList(NetworkanalystVersion networkanalystVersion);

    //分页查询交通网络分析服务版本列表
    public RestResponse getNetworkVersionListPage(int curPage, int pageSize);

    //批量逻辑删除交通网络分析服务版本信息
    public RestResponse deleteNetworkanalystVersion(String idsStr);

    //根据ID查询交通网络分析服务版本信息
    public NetworkanalystVersion getNetworkVersionById(String id);

    //根据版本号查询交通网络分析服务版本信息
    public NetworkanalystVersion getNetworkVersionByVersion(String version);

    //获取新的交通网络分析服务版本号
    public String getNetworkanalystVersionCode();

    //获取新的地图服务版本号
    public String getNewWorkspaceVersionCode();

    //根据用户获取最新的地图服务
    public String getLatestWorkspaceVersion(String dataVersion);

    //根据重点目标、出图范围和应急避难场所列表获取交通网络分析服务的最佳路径分析
    public void getNetworkanalystPathList(String networkId, Site site, double ctfw, List<JcEmergcyShelterVo> jcEmergcyShelterVos);

    //获取Web打印出图模板列表
    public List<TemplateEntity> getWebprintingLayoutsList();

    //上传模板文件到超图模板目录
    public RestResponse uploadTemplateFile(String srcFile);

    //请求基础数据系统
    public RestResponse getJCSJ(String url, int tab, JSONObject valueMap);
}
